package com.liuche.homechat.common.websocket.service;

import com.liuche.homechat.common.user.domain.entity.User;
import com.liuche.homechat.common.websocket.domaiin.dto.WSAuthorize;
import io.netty.channel.Channel;
import io.netty.channel.ChannelHandlerContext;

/**
 * @author：liuche
 * @Date：2024年05月26日 19:40
 * @Description：
 */
public interface CustomWebSocketService {
    /**
     * 与浏览器创建一个 ws 通道做执行的方法
     * @param channel 通道
     */
    void connectActive(Channel channel);

    /**
     * 处理用户登录
     * @param channel
     */
    void loginAuthorize(Channel channel);

    /**
     * 处理 ws 连接失效
     * @param ctx
     */
    void unConnect(ChannelHandlerContext ctx);

    /**
     * 用户进行授权
     */
    void authorize(Long uid, String code);

    void promptUserAuthorize(String code);

    /**
     * 用来处理和用户进行连接认证
     * @param channel
     * @param wsAuthorize
     */
    void handShakeAuthorize(Channel channel, WSAuthorize wsAuthorize);

    /**
     * 实时更新在线用户列表
     * @param user
     */
    void noticeOnlineUsers(User user);
}
